/*
 * @Author: silence
 * @Date: 2022-04-27 11:20:37
 * @LastEditors: silence silence9685@163.com
 * @LastEditTime: 2023-07-20 20:07:05
 * @Description: 路由
 */

import 'package:ems_neutral_app/pages/Login/LoginGuidPage.dart';
import 'package:flutter/material.dart';
import '../../../bloc/userbloc/user_bloc.dart';

class ARoute {
  /**
   * @description: 跳转到某个页面
   * @param {
   * context 当前的context
   * pageWidget 跳转的页面
   * fullscreenDialog 是否全屏弹窗显示（仿iOS present效果）
   * needLogin 是否需要登录
   * }
   * @return {*}
   */
  static Future gotoPage(BuildContext context, Widget pageWidget,
      {bool fullscreenDialog = false, bool needLogin = false}) {
    // 处理需要登录的情况
    if (needLogin) {
      if (!UserBlocTool.isLogin()) {
        return ARoute.gotoPage(context, LoginGuidPage());
      }
    }

    return Navigator.push(
        context,
        MaterialPageRoute(
            builder: (context) => pageWidget,
            fullscreenDialog: fullscreenDialog));
  }

  static pop<T>(BuildContext context, [T? result]) {
    return Navigator.pop(context,result);
  }

  /**
   * @description: 跳转并替换当前页面
   * @param {
   * context 当前的context
   * pageWidget 跳转的页面
   * fullscreenDialog 是否全屏弹窗显示（仿iOS present效果）
   * needLogin 是否需要登录
   * }
   * @return {*}
   */
  static Future replacePage(BuildContext context, Widget pageWidget,
      {bool fullscreenDialog = false, bool needLogin = false}) {
    // 处理需要登录的情况
    if (needLogin) {
      if (!UserBlocTool.isLogin()) {
        return ARoute.gotoPage(context, LoginGuidPage());
      }
    }
    return Navigator.pushReplacement(
        context,
        MaterialPageRoute(
            builder: (context) => pageWidget,
            fullscreenDialog: fullscreenDialog));
  }
}
